class Condition(object):
    
    def __init__(self):
        self.__negated = False
        
    def is_true(self, scope):
        if not self.__negated:
            return self._is_true(scope)
        else:
            return not self._is_true(scope)
        
    def negate(self, negated=True):
        self.__negated = negated
        return self
    
    def _is_true(self, scope):
        raise NotImplementedError
    